home *** CD-ROM | disk | FTP | other *** search
- /*
- ** AREXX $VER: Start_TeX.rexx V1.42 (24.7.92)
- **
- ** This AREXX script compiles the files given in argument, using an
- ** optional format argument. All in all, it handles as if you had called
- ** virtex directly (except if you want to pass virtex some options). As
- ** the server is called, any virtex error messages will go to the server
- ** window, not the CLI. A '?' formatname will interactively ask for the
- ** format to use.
- **
- ** AUTHOR: J\"org H\"ohle, March 91
- ** Revised: 21 April 1991
- **
- ** BUGS: virtex doesn't like filenames with blanks (and ARexx parses them
- ** hardly too), so avoid them in file, directory *and* device names.
- **
- ** does not like names relative to the local root, like ":foo/bar"
- **
- ** FILES: ENV:TEXFORMAT default format used
- ** REXX:NameStruc
- */
-
- Options Results
-
- Signal On BREAK_C
- Signal On BREAK_D
-
- PORTNAME = 'Start_TeX'
- SCRIPT = 'TeX-server.rexx' /* no path required, message only */
-
- /*
- ** Ask interactively for the format name
- */
- If "" = GetClip("TEXQUERY") Then
- ASKFORMAT = 0
- Else
- ASKFORMAT = 1
-
- Parse Arg Format FULLNAME
- If "?" = FORMAT Then Do
- ASKFORMAT = 1
- FORMAT = ""
- End; Else If '&' = Left(FORMAT,1) Then
- FORMAT = SubStr(FORMAT,2)
- Else Do
- Parse Arg FULLNAME /* no format given */
- FORMAT = ""
- End
-
- FULLNAME = Strip(FULLNAME)
-
- Parse Value NameStruc(FULLNAME) With IVOL IDIRS IBASE .
-
- /*
- ** Supply a default extension
- */
- If "" = SubStr(FULLNAME,1+IVOL+IDIRS+IBASE) Then
- FULLNAME = FULLNAME||".tex"
-
- If 0 = IVOL Then Do
- DIREC = Pragma('d')
- If Right(DIREC,1) ~= '/' & Right(DIREC,1) ~= ':' Then
- DIREC = DIREC||'/'
- FULLNAME = DIREC||FULLNAME
- Drop DIREC
- End
- Drop IVOL IDIRS IBASE
-
- If ~Exists(FULLNAME) Then Do
- Say 'Fehler, 'FULLNAME' nicht gefunden!'
- Exit 10
- End
-
- If Show('Port',PORTNAME) Then Do
- ENVFORMAT = MyGetEnv("TEXFORMAT")
- If "" = FORMAT Then Do
- FORMAT = ENVFORMAT
- If ASKFORMAT | "" = ENVFORMAT Then Do
- If "" = FORMAT Then
- FORMAT = 'plain'
-
- Options Prompt 'Welches Format soll benutzt werden (bisher 'FORMAT')? '
- Parse Pull NFORMAT .
- Options Prompt
-
- If "" ~= NFORMAT Then
- FORMAT = NFORMAT
- End /* ASKFORMAT */
- End /* !FORMAT */
-
- /*
- ** If the server is already busy with some compilation, this will
- ** wait till compilation finishes, thus may take a long time.
- */
- Say 'Starte TeX-Server mit dem Format 'FORMAT' und der Datei 'FULLNAME'.'
- If FORMAT ~= ENVFORMAT THen
- Call MySetEnv("TEXFORMAT",FORMAT)
-
- Address Value PORTNAME
- 'compile' FORMAT FULLNAME
- Say 'TeX-Server wurde mit Datei 'FULLNAME' aufgerufen.'
- End; Else Do
- /*
- ** The TeX server must be started first
- */
- Say 'Fehler, der TeX-Server 'SCRIPT' läuft nicht!'
- Exit 5
- End
-
- BREAK_C:
- BREAK_D:
- Exit
-
- /*
- ** When will ARexx supply GetEnv/SetEnv ?
- */
- MyGetEnv: Procedure
- Parse Arg NAME
-
- If Open(TEMPFILE,"ENV:"||NAME,'r') Then Do
- GIVES = Readln(TEMPFILE)
- Call Close TEMPFILE
- End; Else
- GIVES = ""
-
- Return GIVES
-
- MySetEnv: Procedure
- Parse Arg NAME,CONTENT
-
- Address COMMAND "SetEnv" NAME CONTENT
-
- Return
-